
package se.sll.service.catalogue.offers.api.model;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import javax.validation.constraints.NotNull;
import org.codehaus.jackson.annotate.JsonAnyGetter;
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonPropertyOrder;
import org.codehaus.jackson.map.annotate.JsonSerialize;


/**
 * An Instance Identifier
 * 
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "root",
    "extension"
})
public class Id {

    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("root")
    @NotNull
    private String root;
    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("extension")
    @NotNull
    private String extension;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    /**
     * 
     * (Required)
     * 
     * @return
     *     The root
     */
    @JsonProperty("root")
    public String getRoot() {
        return root;
    }

    /**
     * 
     * (Required)
     * 
     * @param root
     *     The root
     */
    @JsonProperty("root")
    public void setRoot(String root) {
        this.root = root;
    }

    public Id withRoot(String root) {
        this.root = root;
        return this;
    }

    /**
     * 
     * (Required)
     * 
     * @return
     *     The extension
     */
    @JsonProperty("extension")
    public String getExtension() {
        return extension;
    }

    /**
     * 
     * (Required)
     * 
     * @param extension
     *     The extension
     */
    @JsonProperty("extension")
    public void setExtension(String extension) {
        this.extension = extension;
    }

    public Id withExtension(String extension) {
        this.extension = extension;
        return this;
    }

    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }

    public Id withAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
        return this;
    }

}
